import java.util.Stack;

public class Solut {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        for(int i=0;i<s.length();i++){
            char ch = s.charAt(i);
            if(ch=='('||ch=='['||ch=='{'){
                // 左括号就入栈
                stack.push(ch);
            }else{
                // 右括号 先判断 栈是否为空
                if(stack.empty()){
                    // 栈为空，说明没有左括号
                    return false;
                }else{
                    // 不为空就开始匹配
                    int temp = stack.peek();
                    if(ch==')'&&temp=='('||ch==']'&&temp=='['
                            ||ch=='}'&&temp=='{'){
                        // 这次括号匹配成功，弹出栈顶元素
                        stack.pop();

                    }else{
                        return false;

                    }


                }

            }

        }
        // 若字符串遍历完后
        if(!stack.empty()){
            // 栈不为空
            return false;
        }else{
            return true;  // 为空说明全部匹配成功
        }

    }
}
